﻿CREATE PROCEDURE [dbo].[usp_update_Batch]
(
	@BatchID uniqueidentifier
	,@EndDatetime datetime
	,@ErrorMessage varchar(max)
	,@Debug bit = 0
)
AS

SET NOCOUNT ON;

-- Bootstrap
DECLARE @DebugPrefix       varchar(10);
DECLARE @ErrorCode         int;

SET @ErrorCode          = 0;
SET @DebugPrefix        = '>>> DEBUG: ';

-- Print parameters
IF (@Debug > 0)
BEGIN
	PRINT @DebugPrefix + '@BatchID = '		+ CONVERT(varchar, @BatchID);
	PRINT @DebugPrefix + '@EndDatetime = '	+ CONVERT(varchar, @EndDatetime);
	PRINT @DebugPrefix + '@ErrorMessage = ' + @ErrorMessage;

END;

UPDATE [dbo].[Batch]
SET
	[EndDatetime] = @EndDatetime
	,[ErrorMessage] = @ErrorMessage
WHERE
     [BatchID] = @BatchID
			

-- CHECK FOR ERROR
SET @ErrorCode = @@Error;

IF (@ErrorCode <> 0) GOTO ERROR_HANDLER;

RETURN 0;

-- Handles errors.
ERROR_HANDLER:
IF (@ErrorCode <> 0)
BEGIN
    IF (@Debug > 0) 
		BEGIN
			PRINT @DebugPrefix + 'Error Code = ' + CAST(@ErrorCode AS varchar(10)) + ' occurred.';
			RETURN @ErrorCode
		END

    -- Don't return any evidence of what specific error occurred, i.e. 
    -- we want to ward off potential hackers.
    RETURN 1;
END;

SET NOCOUNT OFF;
